namespace OasisCiq.Xal
{
    using System.Collections.Specialized;
    using CommonTypes;
    using External;
    using XS;

    /// <summary>
    /// Free format address representation. An address can have more than one line.
    /// The order of the AddressLine elements must be preserved.
    /// </summary>
    public class AddressLine : CTString, IDataQualityGroup, IXLink, IExtendedAttributes
    {
        public AddressLine(string value)
            : base(value)
        {
        }

        /// <summary>
        /// What does the address line describe? e.g.
        /// Street details, suburb details, post code details, whole address, etc
        /// </summary>
        public virtual AddressLineTypeList Type { get; set; }

        public virtual DataQualityTypeList DataQualityType { get; set; }

        public virtual XSDateTime ValidFrom { get; set; }

        public virtual XSDateTime ValidTo { get; set; }

        public virtual NameValueCollection ExtendedAttributes { get; set; }
    }
}